package cc.rengu.redp.bizimpl.upmp.service;

import cc.rengu.igas.bomp.facade.BompMchntQueryService;
import cc.rengu.igas.bomp.facade.request.MchntAreaListQueryRequest;
import cc.rengu.igas.bomp.facade.request.MchntFeeListQueryRequest;
import cc.rengu.igas.bomp.facade.request.MchntInfoListQueryRequest;
import cc.rengu.igas.bomp.facade.response.MchntFeeListQueryResponse;
import cc.rengu.igas.momp.facade.bean.MchntFeeDiscountInfoBean;
import cc.rengu.igas.momp.facade.bean.MchntFeeDiscountMcInfoBean;
import cc.rengu.igas.momp.facade.bean.MchntFeeDiscountMcListInfoBean;
import cc.rengu.igas.momp.facade.bean.MchntQuotaInfoBean;
import cc.rengu.igas.momp.facade.request.EditMchntFeeTxnAmtLimitRequest;
import cc.rengu.igas.momp.facade.request.QueryMchntFeeDiscountLimitRequest;
import cc.rengu.igas.momp.facade.request.QueryMchntFeeDiscountMcListInfoRequest;
import cc.rengu.igas.momp.facade.request.QueryMchntFeeTxnAmtLimitRequest;
import cc.rengu.redp.bizimpl.upmp.bean.CommissionAddMchntRequest;
import cc.rengu.redp.bizimpl.upmp.bean.CommissionInfo;
import cc.rengu.redp.bizimpl.upmp.bean.CommissionPublishRequest;
import cc.rengu.redp.bizimpl.upmp.bean.MarketManagerRequest;
import cc.rengu.redp.bizimpl.upmp.domain.UpmpBMchntBaseInfo;
import cc.rengu.redp.bizimpl.upmp.vo.OperationResult;
import cc.rengu.redp.bizimpl.upmp.vo.UpmpUserInfoVO;
import cc.rengu.redp.common.domain.QueryRequest;
import cc.rengu.redp.common.exception.RedpException;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springframework.ui.Model;

import java.util.Map;

public interface CommissionMarketService {


    //商户手续费优惠营销活动列表查询
    IPage<MchntFeeDiscountMcListInfoBean> findByPage(QueryRequest queryRequest, QueryMchntFeeDiscountMcListInfoRequest reqDto)throws RedpException;

    //修改方法
    Map<String, Object> setModel(String mcNo, String queryType, String queryRole) throws RedpException;

    //商户手续费优惠营销活动编辑
    void editSave(CommissionInfo entity) throws RedpException;

    //进行中活动新增商户
    OperationResult addmchntInfos(CommissionAddMchntRequest entity);

    //商户优惠列表查询
    IPage<MchntQuotaInfoBean> findMchntPage(QueryMchntFeeTxnAmtLimitRequest reqDto, QueryRequest pageable) throws RedpException;

    //变更商户优惠上限
    void changeAmtLimit(EditMchntFeeTxnAmtLimitRequest reqDto) throws RedpException;

    //商户手续费优惠额度列表查询
    IPage<MchntFeeDiscountInfoBean> findMchntLimitListPage(QueryMchntFeeDiscountLimitRequest reqDto, QueryRequest pageable) throws RedpException;

    // 查询商户信息
    Map<String, Object> queryMcNoList(UpmpUserInfoVO user, MchntInfoListQueryRequest request, String traceNo);

    //查询商圈信息
    Map<String, Object> queryMchntAreaList(UpmpUserInfoVO user, MchntAreaListQueryRequest request, BompMchntQueryService bompQueryService, String traceNo);

    //校验是否是特殊费率商户
    Boolean checkFeeMchnt(UpmpUserInfoVO user, String mchntNo, BompMchntQueryService bompQueryService, String traceNo);

    //商户费率列表查询
    MchntFeeListQueryResponse mchntFeeListQuery(String instId, UpmpUserInfoVO user, MchntFeeListQueryRequest req, BompMchntQueryService bompQueryService, String traceNo) throws RedpException;

    //商户手续费营销活动的管理，包括删除草稿、审核通过及退回
    void manageMchntFeeDiscountMc(MarketManagerRequest entity) throws RedpException;

    //商户手续费发布
    void publishMchntFeeDiscountMc(CommissionPublishRequest entity, String msg) throws RedpException;
}
